home *** CD-ROM | disk | FTP | other *** search
/ Windows Expert / Windows Expert.iso / program / wintech1.zip / PETZOLD.ZIP / MENUICON.C < prev    next >
C/C++ Source or Header  |  1991-11-05  |  2KB  |  73 lines

  1. /*-----------------------------------------
  2.    MENUICON.C -- Adding a Menu and Icon
  3.                  (c) Charles Petzold, 1991
  4.   -----------------------------------------*/
  5.  
  6. #include <windows.h>
  7. #include "menuicon.h"
  8.  
  9. BOOL FAR PASCAL DlgProc (HWND, WORD, WORD, LONG) ;
  10.  
  11. char szAppName [] = "MenuIcon" ;
  12.  
  13. int PASCAL WinMain (HANDLE hInstance, HANDLE hPrevInstance,
  14.                     LPSTR lpszCmdLine, int nCmdShow)
  15.      {
  16.      DialogBox (hInstance, szAppName, NULL,
  17.           MakeProcInstance (DlgProc, hInstance)) ;
  18.  
  19.      return 0 ;
  20.      }
  21.  
  22. BOOL FAR PASCAL DlgProc (HWND hwnd, WORD message, WORD wParam, LONG lParam)
  23.      {
  24.      PAINTSTRUCT ps ;
  25.  
  26.      switch (message)
  27.           {
  28.           case WM_INITDIALOG:
  29.                return TRUE ;
  30.  
  31.           case WM_COMMAND:
  32.                switch (wParam)
  33.                     {
  34.                     case ID_OPEN:
  35.                     case ID_SAVE:
  36.                          MessageBeep (0) ;
  37.                          return TRUE ;
  38.  
  39.                     case ID_EXIT:
  40.                          SendMessage (hwnd, WM_CLOSE, 0, 0L) ;
  41.                          return TRUE ;
  42.                     }
  43.                break ;
  44.  
  45.           case WM_ERASEBKGND:
  46.                if (IsIconic (hwnd))
  47.                     return TRUE ;
  48.  
  49.                break ;
  50.  
  51.           case WM_PAINT:
  52.                if (IsIconic (hwnd))
  53.                     {
  54.                     BeginPaint (hwnd, &ps) ;
  55.                     DrawIcon (ps.hdc, 0, 0, LoadIcon (NULL, IDI_APPLICATION)) ;
  56.                     EndPaint (hwnd, &ps) ;
  57.  
  58.                     return TRUE ;
  59.                     }
  60.                break ;
  61.  
  62.           case WM_CLOSE:
  63.                if (IDOK == MessageBox (hwnd, "Really want to end program?",
  64.                                    szAppName, MB_ICONQUESTION | MB_OKCANCEL))
  65.                     {
  66.                     EndDialog (hwnd, 0) ;
  67.                     return TRUE ;
  68.                     }
  69.                break ;
  70.           }
  71.      return FALSE ;
  72.      }
  73.